package study.alibaba.sentinel.support.handler;

import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import study.eggs.result.Result;
import study.eggs.result.Results;

import java.util.Map;

/**
 * 全局 Block 处理器
 * （1）必须为 public static
 * （2）
 *
 * <p>
 * 兜底方案 面临的问题
 * 1.系统默认的，没有体现我们自己的业务要求。
 * 2.依照现有条件，我们自定义的处理方法又和业务代码耦合在一块，不直观。
 * 3.每个业务方法都添加一个兜底的，那代码膨胀加剧。
 * 4.全局统一的处理方法没有体现。
 */
@Slf4j
public class GlobalBlockHandler {

    public static Result handlerException(BlockException bex) {
        log.info(">>>>>> {}", bex.getClass().getName());
        Map<String, Object> data = Maps.newHashMap();
        data.put("message", "请求太多，请稍后再试...");
        return Results.ok(data);
    }
}
